1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.lang3.builder;
18
19 import static org.junit.Assert.assertEquals;
20
21 import java.util.ArrayList;
22 import java.util.HashMap;
23
24 import org.junit.After;
25 import org.junit.Before;
26 import org.junit.Test;
27
28
29
30
31
32
33 public class RecursiveToStringStyleTest {
34
35 private final Integer base = Integer.valueOf(5);
36 private final String baseStr = base.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(base));
37
38 @Before
39 public void setUp() throws Exception {
40 ToStringBuilder.setDefaultStyle(ToStringStyle.DEFAULT_STYLE);
41 }
42
43 @After
44 public void tearDown() throws Exception {
45 ToStringBuilder.setDefaultStyle(ToStringStyle.DEFAULT_STYLE);
46 }
47
48
49
50 @Test
51 public void testBlank() {
52 assertEquals(baseStr + "[]", new ToStringBuilder(base).toString());
53 }
54
55 @Test
56 public void testAppendSuper() {
57 assertEquals(baseStr + "[]", new ToStringBuilder(base).appendSuper("Integer@8888[]").toString());
58 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).appendSuper("Integer@8888[<null>]").toString());
59
60 assertEquals(baseStr + "[a=hello]", new ToStringBuilder(base).appendSuper("Integer@8888[]").append("a", "hello").toString());
61 assertEquals(baseStr + "[<null>,a=hello]", new ToStringBuilder(base).appendSuper("Integer@8888[<null>]").append("a", "hello").toString());
62 assertEquals(baseStr + "[a=hello]", new ToStringBuilder(base).appendSuper(null).append("a", "hello").toString());
63 }
64
65 @Test
66 public void testObject() {
67 final Integer i3 = Integer.valueOf(3);
68 final Integer i4 = Integer.valueOf(4);
69 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) null).toString());
70 assertEquals(baseStr + "[3]", new ToStringBuilder(base).append(i3).toString());
71 assertEquals(baseStr + "[a=<null>]", new ToStringBuilder(base).append("a", (Object) null).toString());
72 assertEquals(baseStr + "[a=3]", new ToStringBuilder(base).append("a", i3).toString());
73 assertEquals(baseStr + "[a=3,b=4]", new ToStringBuilder(base).append("a", i3).append("b", i4).toString());
74 assertEquals(baseStr + "[a=<Integer>]", new ToStringBuilder(base).append("a", i3, false).toString());
75 assertEquals(baseStr + "[a=<size=0>]", new ToStringBuilder(base).append("a", new ArrayList<Object>(), false).toString());
76 assertEquals(baseStr + "[a=[]]", new ToStringBuilder(base).append("a", new ArrayList<Object>(), true).toString());
77 assertEquals(baseStr + "[a=<size=0>]", new ToStringBuilder(base).append("a", new HashMap<Object, Object>(), false).toString());
78 assertEquals(baseStr + "[a={}]", new ToStringBuilder(base).append("a", new HashMap<Object, Object>(), true).toString());
79 assertEquals(baseStr + "[a=<size=0>]", new ToStringBuilder(base).append("a", (Object) new String[0], false).toString());
80 assertEquals(baseStr + "[a={}]", new ToStringBuilder(base).append("a", (Object) new String[0], true).toString());
81 }
82
83 @Test
84 public void testPerson() {
85 final Person p = new Person();
86 p.name = "John Doe";
87 p.age = 33;
88 p.smoker = false;
89 p.job = new Job();
90 p.job.title = "Manager";
91 final String pBaseStr = p.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(p));
92 final String pJobStr = p.job.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(p.job));
93 assertEquals(pBaseStr + "[name=John Doe,age=33,smoker=false,job=" + pJobStr + "[title=Manager]]",
94 new ReflectionToStringBuilder(p, new RecursiveToStringStyle()).toString());
95 }
96
97 @Test
98 public void testLong() {
99 assertEquals(baseStr + "[3]", new ToStringBuilder(base).append(3L).toString());
100 assertEquals(baseStr + "[a=3]", new ToStringBuilder(base).append("a", 3L).toString());
101 assertEquals(baseStr + "[a=3,b=4]", new ToStringBuilder(base).append("a", 3L).append("b", 4L).toString());
102 }
103
104 @Test
105 public void testObjectArray() {
106 Object[] array = new Object[] {null, base, new int[] {3, 6}};
107 assertEquals(baseStr + "[{<null>,5,{3,6}}]", new ToStringBuilder(base).append(array).toString());
108 assertEquals(baseStr + "[{<null>,5,{3,6}}]", new ToStringBuilder(base).append((Object) array).toString());
109 array = null;
110 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append(array).toString());
111 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) array).toString());
112 }
113
114 @Test
115 public void testLongArray() {
116 long[] array = new long[] {1, 2, -3, 4};
117 assertEquals(baseStr + "[{1,2,-3,4}]", new ToStringBuilder(base).append(array).toString());
118 assertEquals(baseStr + "[{1,2,-3,4}]", new ToStringBuilder(base).append((Object) array).toString());
119 array = null;
120 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append(array).toString());
121 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) array).toString());
122 }
123
124 @Test
125 public void testLongArrayArray() {
126 long[][] array = new long[][] {{1, 2}, null, {5}};
127 assertEquals(baseStr + "[{{1,2},<null>,{5}}]", new ToStringBuilder(base).append(array).toString());
128 assertEquals(baseStr + "[{{1,2},<null>,{5}}]", new ToStringBuilder(base).append((Object) array).toString());
129 array = null;
130 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append(array).toString());
131 assertEquals(baseStr + "[<null>]", new ToStringBuilder(base).append((Object) array).toString());
132 }
133
134 static class Person {
135
136
137
138 String name;
139
140
141
142
143 int age;
144
145
146
147
148 boolean smoker;
149
150
151
152
153 Job job;
154 }
155
156 static class Job {
157
158
159
160 String title;
161 }
162
163 }